第3节 搭建网络服务


我们在后面的章节中会接触到很多和网络相关的内容,比如第三章的小车控制,是开发板作为服务器,使用手机等访问服务器,对小车进行运动控制,接收服务器传来的小车摄像头画面等。第六章通过物联网平台,控制机器人的姿态、语音交互、各种传感器数据的读取和处理等。

内容提要

  • 知道OSI网络模型
  • 会安装简单的网络服务器
  • 体验静态博客系统,积木编程服务的搭建
  • 安装配置基于MySQL,PHP,Nginx的博客系统(选做)

OSI七层网络模型

OSI(Open System Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互连模型。是互联网最基本也是重要的知识。 ISO为了更好的使网络应用更为普及,推出了OSI参考模型。其含义就是推荐所有公司使用这个规范来控制网络。这样所有公司都有相同的规范,就能互联了。

OSI七层模型的划分

OSI定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层),即ISO开放互连系统参考模型。如下图。

705728-20160424234824085-667046040

每一层实现各自的功能和协议,并完成与相邻层的接口通信。OSI的服务定义详细说明了各层所提供的服务。某一层的服务就是该层及其下各层的一种能力,它通过接口提供给更高一层。各层所提供的服务与这些服务是怎么实现的无关。

传输层协议:TCP、UDP

顾名思义,传输层主要的功能是传递信息。传输层建立了主机端到端的链接,我们通常说的,TCP UDP就是在这一层。端口号即是这里的“端”。端是由应用层来决定的。

我们在后面章节接触到的机器人或小车,我们也是通过TCP协议,通过访问IP地址和端口号,来与它们交换信息的。

应用层协议:HTTP、FTP、SMB

网络中的计算机是通过IP地址来代表其身份的,IP地址(公网IP)能表示某台特定的计算机,但是一台计算机上可以同时提供很多个服务,如数据库服务、FTP服务、Web服务等,我们就通过端口号来区别相同计算机所提供的这些不同的服务,如常见的端口号21表示的是FTP服务,端口号23表示的是Telnet服务端口。端口号80和443是http常用的端口。同学们可以在浏览器的地址栏尝试输入,观察有无区别。一般来说,网址或IP地址后面如果不输入特定端口,默认是80端口。

Web服务器Apache与Nginx

Apache是Apache软件基金会下的一个项目—Apache HTTP Server Project,Nginx同样也是一款开源的HTTP服务器软件。HTTP服务器软件本质上也是一种应用程序——它通常运行在服务器之上,绑定服务器的IP地址并监听某一个端口来接收并处理HTTP请求,这样客户端(一般来说是 IE, Firefox,Chrome这样的浏览器)就能够通过HTTP协议来获取服务器上的网页、文档、音频、视频等等资源。

练习1:使用Nginx发布网页

我们后面使用的树莓派,运行的是Linux的一个重要的发行版Debian。在Debian操作系统,通过终端可以很方便地安装和部署Nginx服务器。

在树莓派上安装Nginx

  1. 打开终端
  2. 运行命令sudo apt install nginx
  3. 安装完毕后,运行sudo systemctl enable nginxsudo systemctl status nginx
  4. 打开浏览器,输入树莓派的IP地址,看看是不是打开了一个Nginx的说明页呢,这就表示我们安装成功了。其他同学可以通过访问你的树莓派IP地址,来看到你发布的内容了。网站的搭建是不是非常简单呢?

在Windows上安装Nginx

搭建Scratch与Blockly编程平台

timg

这只可爱的小猫就是Scratch的吉祥物。Blockly和Scratch都是开源的网络程序。Scratch比Blockly更早诞生,到了Scratch 3.0,Scratch开始使用Blockly进行构建。我们可以比像部署WordPress或Typecho更容易来在服务器上部署Blockly和Scratch。

demoofblockly

上图是Blockly的一个Demo。通过它,我们可以用积木的方式来控制小车和机器人、灯、甚至是电视机和空调。在后面的学习中,我们将深入地了解它们。

Node.js和LMNP

简介

练习2:使用Gitbook发布个人网站(选做)

同学们如果对搭建个人网站感兴趣,可以了解一下以下网站系统,WordPress是基于PHP和MySQL的一个个人博客网站系统,Typecho是一个较为轻量级的个人博客网站系统。 本在线课程使用的是Gitbook服务。

Gitbook文件结构

_book: 为编译好的静态站点

content:课程文件目录

node_moudles:gitbook 插件等文件

book.json:配置文件,主要用于添加插件和插件配置信息

SUMMARY.md:gitbook 目录和文档架构,在 content 中更改文件名称或增加减少文件需要在SUMMARY.md中同步改动

安装和初始化

  1. 安装 node.js。推荐使用nvm安装

打开终端,执行curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.36.0/install.sh | bash

  1. 安装 gitbook
npm install gitbook-cli -g
  1. 建立工作文件夹

~路径下使用mkdir命令新建一个名叫mygitbook的文件夹,并用cd命令切换到这个文件夹

cdgitbook

  1. 初始化
gitbook init

在使用 gitbook init 之后本地会生成两个文件 README.mdSUMMARY.md ,这两个文件都是必须的,一个为介绍,一个为目录结构。

initgitbook

  1. 编辑README.md

还记得nano命令么?用它编辑README文件,随便写几句话然后保存。

gitbook使用Markdown语法书写。Markdown 是一种文本格式。你可以用它来控制文档的显示。使用 markdown,你可以创建粗体的文字,斜体的文字,添加图片,并且创建列表等等。基本上来讲,Markdown 就是普通的文字加上 # 或者 * 等符号。详细语法可参看这里

  1. 本地预览
gitbook serve

执行这个命令后,可以按照提示打开地址,如http://localhost:4000地址查看你的站点。按Ctrl+C结束任务。

servegitbook

gitbooklook

  1. 发布电子书
gitbook build

该命令会在当前文件夹中生成 _book 文件夹,这个文件夹中的内容就是静态网页版电子书。
buildbook

在Nginx配置文件中正确配置此文件夹的路径,就可以通过Web服务访问到你的站点了。执行完下面的操作后,打开浏览器访问http://localhost:8000,邀请其他同学通过http://你的IP地址:8000访问你的站点吧。
如果你的IP地址是公网IP,那么世界上的任何人都可以通过它来访问你的站点了。

# 获取当前地址,这会输出`/home/你的用户名/mygitbook`
pwd
# Nginx配置
sudo nano /etc/nginx/conf.d/mygitbook.conf

## 输入以下内容
server{
   listen 8000;
   server_name _;
   root /home/你的用户名/mygitbook/_book;
   index index.html;
}

## 保存后退出nano,然后执行
sudo nginx -s reload

安装插件(选做)

gitbook拥有很多插件,使用这些插件,可以为站点增加不同的功能。

  1. book.json"plugins" 字段中添加需要安装的插件名称
  2. 打开 terminal 切换到 gitbook 项目路径
  3. 运行命令 gitbook install,程序会自动按照 book.json 中的配置安装插件

练习3:使用Typecho发布个人网站(选做)

在运行Ubuntu 20.04或Linux Mint 20的操作系统上执行以下命令。

环境安装

sudo apt install nginx
sudo apt install mysql-server
sudo apt install php
sudo apt install php-fpm
sudo apt install php-mysql php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap

启动服务

sudo systemctl enable mysql
sudo systemctl enable nginx
sudo systemctl enable php7.4-fpm

mysql配置

# mysql安装后,切换到root用户,可以直接用mysql命令登陆,没有密码。
# 如果你不知道或未设置root密码,使用以下命令为root用户指定一个密码。
sudo passwd root
# 切换到root用户
su root
#进入mysql
mysql
# mysql8修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
# 创建数据库
CREATE DATABASE typecho;

PHP-fpm配置

cd /etc/php/7.4/fpm/pool.d
cat www.conf |grep fpm.sock
# 找到isten = /run/php/php7.4-fpm.sock

nginx配置

# 删除默认配置文件
sudo rm /etc/nginx/site-enabled/default

# 在此处增加配置文件:/etc/nginx/conf.d/typecho.conf
server {
    listen 80;
    server_name _;
    root /home/niji/www/typecho;
    index index.php index.html;

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
#   此行填写上一步找到的路径
    fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

location / {
    try_files $uri $uri/ /index.php$is_args$args;
}
error_page 404 /404.html;
location = /40x.html{
}
error_page 500 502 503 504 /50x.html;
location = /50x.html{
}

# 保存后重新加载Nginx配置
sudo nginx -s reload

获取typecho代码

cd ~
# 为网站创建目录
mkdir -p www/typecho
cd www
# 下载并解压源码
wget http://typecho.org/downloads/1.1-17.10.30-release.tar.gz
tar -xzvf 1.1-17.10.30-release.tar.gz
mv 1.1-17.10.30-release typecho
# 为目录设置正确的用户权限
chown -R www-data:www-data typecho

安装typecho

访问网址 ,按提示进行安装

© 北京师范大学智慧学习研究院 all right reserved,powered by Gitbook修订时间: 2020-11-10

results matching ""

    No results matching ""

    results matching ""

      No results matching ""